package com.es.bst;



/**
 * @author 二十
 * @since 2022/1/17 2:16 上午
 */
public abstract class AbstractBinarySearchTree<E extends Comparable<E>> {
    /**
     * 是否为空
     * @return
     */
    public abstract boolean isEmpty();

    /**
     * 树中元素个数
     * @return
     */
    public abstract int getSize();

    /**
     * 插入元素
     *
     * @param data
     */
    public abstract void add(E data);

    /**
     * 是否包含元素
     *
     * @param e
     * @return
     */
    public abstract boolean contains(E e);

    /**
     * 前序遍历
     */
    public abstract void preOrder();

    /**
     * 中序遍历
     */
    public abstract void midOrder();


    /**
     * 后序遍历
     */
    public abstract void postOrder();




    /**
     * 前序遍历非递归写法
     */
    public abstract void preOrderNR();

    /**
     * 层序遍历
     */
    public abstract void guangOrder();

    /**
     * 寻找二分搜索树的最小元素
     */
    public abstract E minElement();


    /**
     * 删除并返回二叉树中最小结点
     *
     * @return
     */
    public abstract E removeMinElement();


    /**
     * 从二分搜索树中删除指定的结点
     */
    public abstract void remove(E e);


}
